跨域产生的原因及解决办法，项目中如何解决跨域的

跨域的原因：

大体上分为三点： 协议不同 域名不同 端口不同

1、浏览器的同源策略是确保浏览器安全的特别重要的一个安全策略 

如果没有同源策略：在一个域上加载的脚本不允许访问另一个域上文本属性 不然通过内嵌 iframe 恶意添加 javaScript 脚本就可以轻松获取到用户信息

何为同源：url 是由协议、域名、端口和路径组成 如果两个路径的协议、域名、端口都相同则表示再同一个域上

<!-- 在浏览器上 <script>、<img>、<link>、<iframe>等标签都可以加载跨域资源 且不受同源限制 -->



jsonp约定的参数名是callback，也可以自定义,格式为: jsonp:'callback2',此时后台构造函数super里写callback2即可,这种方式也有一些弊端

JSONP弊端

服务器需要改动代码支持-(自己的项目还好，如果是调用别人的接口,别人没有设置jsonp访问形式的话就不行了)

只支持GET方式请求(因为要返回js代码)

请求不是XHR(没有异步刷新功能)


GET 和 POST 的区别

1、get参数通过url传递，post放在request body中。
2、get请求在url中传递的参数是有长度限制的，而post没有。
3、get比post更不安全，因为参数直接暴露在url中，所以不能用来传递敏感信息。
4、get请求只能进行url编码，而post支持多种编码方式。
5、get请求会浏览器主动cache，而post支持多种编码方式。
6、get请求参数会被完整保留在浏览历史记录里，而post中的参数不会被保留。
7、GET和POST本质上就是TCP链接，并无差别。但是由于HTTP的规定和浏览器/服务器的限制，导致他们在应用过程中体现出一些不同。

-----------------------------

CORS，跨域资源共享，它需要浏览器和服务器同事支持，目前，所有浏览器都支持该功能，IE浏览器不能低于IE10。

　　整个CORS通信中，都是浏览器自动完成的，不需要用户的参与，对于开发者来说cors通信与同源的ajax没有差别，代码完全一样。浏览器一旦发现ajax请求跨源，就会自动添加一些附加的头信息，有时还会多出一次附加的请求，但用户不会有察觉。

　　要实现cors通信，主要是在服务器，也就是获得数据的一方做处理。